Mobile devices such as cellular telephones, smart phones, GPS systems, and cellular-enabled personal computers have become very common and very powerful. This combination of ubiquity and capability has created an ongoing demand for even more capable devices and more complex applications.
The power and capabilities of mobile devices are dependent on the availability of various infrastructures. A mobile device operates on a communication network provided by a mobile telephone operator. Such communication networks usually provide not only cellular communication links but “basic” services such as time keeping and access to the public telephone network. In addition, the United States Government operates an easily accessed global positioning system (GPS) as well as ultra-accurate time signals that can be used by communication networks and mobile devices to synchronize signals and operations. A state-of-the-art mobile device, sometimes referred to as a smartphone, can include a wide range of built-in features and capabilities, for example features such as communication ports, touch screen displays, keyboards, on/off sensors, orientation sensors, accelerometers, magnometers, light sensors, proximity sensors, cameras, one or more timers, microphones, audio outputs, memory card readers, internal memory, specialized software, GPS, and capabilities such as programmability, identifying cell towers, ascertaining cell tower signal strengths, identifying WiFi networks, and determining existing battery level (strength).
By using those infrastructures mobile devices can run a wide range of applications (“Apps”) that provide functionalities such as telephone communications, electronic texting, data communications, social networking, calendars, alarms, memo and note recording, GPS navigation, location tracking, music (MP3) and video (MP4) playback, video calling, conference calling, movie playback, picture taking and sending, games, emails, audio and video downloading, internet access and browsing, specialized advertising, short range communications such as Bluetooth™, mobile banking, instant messaging and the ever-popular specialized ringtones.
The immense power, speed, and capabilities of mobile devices, the infrastructures that support them, and the applications that orchestrate their interactions and functions create an ongoing problem: how exactly does one go about testing an application running on a mobile device? Testing simple software running on rather simple devices such as microcontrollers that have just a few basic inputs can be challenging, but testing software that interacts with a mobile device, its sensors, and its communication network is simply far more of a challenge.